ci: fix uv install, split Python/frontend workflows, fix TS errors#1
Merged
Conversation
- Add Watch Profiles React page (full CRUD: create, update, delete, run now) with schedule config, email group multi-select, sidebar nav entry - Replace in-memory polling scheduler with APScheduler + PostgreSQL job store; falls back to polling loop if apscheduler unavailable - Add human-in-the-loop approval: orchestrator pauses after research phase when autonomous=False and quality below threshold; session saved as awaiting_approval with checkpoint; new /approve and /reject endpoints resume or cancel synthesis; SSE approval_required event drives frontend banner with Approve/Reject buttons in SessionDetailPage - Add ApiService.approveSession and rejectSession methods
…estrator, CI no-push - Planner enrichment: query SearchMemoryTool before building the plan prompt; inject previously covered topics and article titles so LLM avoids repeating already-researched angles across sessions - POST /orchestrator/sessions: pre-create a pending session record and return a stable session_id; frontend now obtains the ID synchronously, navigates to the detail page immediately, then opens the SSE stream — eliminates the race where session_id was only known after the first SSE event - Newsletter unified: /newsletter/generate now internally calls OrchestratorAgent instead of the standalone newsletter agent, giving newsletters the full plan → research → synthesis → email pipeline - CI: remove GHCR push (docker-build job now build-only, no login step needed)
…ation - Fix LangGraph deprecation warnings: replace config_schema= with context_schema= in both StateGraph builders (deep_research graph); type all node config params as Optional[RunnableConfig] instead of Optional[dict] in deep_research/nodes.py (5 nodes) and orchestrator synthesizer node - Remove Redis: the service was declared in docker-compose.yml and .env.example but never used in any Python code; dropping it simplifies the stack and eliminates a spurious depends_on health-check blocker - Inter-session dedup in collector: before ranking, query the Article table for URLs already persisted from prior sessions; fresh articles are ranked first; known articles are appended only if nothing new was found, preventing empty syntheses when the search space is exhausted
…cker jobs - ci-python.yml: lint (ruff) + test (pytest + postgres service) using uv for fast installs; path filters so it only runs on Python/test changes - ci-frontend.yml: npm ci + tsc --noEmit + vite build; path filters so it only runs on frontend changes - Remove docker-build and docker-smoke jobs entirely — they required postgres, redis, full compose stack and were the main source of flakiness
- ci-python.yml: replace uv pip install --system (fails on PEP 668 Ubuntu) with uv venv + uv pip install --python + GITHUB_PATH injection; tested locally (200 passed, ruff clean) - frontend/src/types/index.ts: add AWAITING_APPROVAL to SessionStatus enum so session.status comparison compiles without TS2367 - frontend/src/App.tsx: annotate sessionId as string to accept both crypto.randomUUID() (branded type) and API-returned string (TS2322) - Both npm build and tsc --noEmit now pass cleanly
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ci-python.yml): remplaceuv pip install --system(bloqué par PEP 668 sur Ubuntu 24.x) par le patternuv venv + uv pip install --python + GITHUB_PATH— testé localement (200 passed, ruff clean)ci-frontend.yml):npm ci+tsc --noEmit+vite build— build propre vérifié en localci.ymlmonolithique avec les jobs DockerSessionStatus: ajout deAWAITING_APPROVAL: 'awaiting_approval'pour couvrir le statut du flux d'approbationApp.tsx: annotationsessionId: stringpour acceptercrypto.randomUUID()(branded) et la chaîne retournée par l'APITest plan
🤖 Generated with Claude Code